欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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个字节。

相关标签: C++