C++学习记录
程序员文章站
2022-07-09 21:53:46
...
(记录学习中遇到的问题,仅做笔记)
1、纯虚函数的正确声明:virtual void print()=0
2、常对象
#include<iostream>
using namespace std;
class Sample{
public:
Sample(int i,int j){
x=i;
y=j;
}
void disp(){
cout<<"disp1"<<endl;
}
void disp()const{
cout<<"disp2"<<endl;
}
private:
int x,y;
};
int main(){
const Sample a(1,2);
a.disp();
return 0;
}
输出:disp2
说明:如果一个对象说明为常对象,则通过该对象只能调用它的常成员函数。题中,对象a被定义成类Sample的常对象,通过对象a只能调用其常成员函数disp,所以程序最后输出disp2。
3、空类
#include <stdio.h>
#include <stdlib.h>
class A
{
};
int main()
{
printf("%d\n",sizeof(class A));
return 0;
}
输出为:1
实际上,这是类结构体实例化的原因,空的类或结构体同样可以被实例化,如果定义对空的类或者结构体取sizeof()的值为0,那么该空的类或结构体实例化出很多实例时,在内存地址上就不能区分该类实例化出的实例,所以,为了实现每个实例在内存中都有一个独一无二的地址,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址,所以空类所占的内存大小是1个字节。