C++ 面试考点总结(未完待续)

1,244 阅读2分钟

C++ 面试准备

C++语言基础知识

  • sizeof作用:

    • sizeof空类型,返回值为1。 原因:声明空类型时,必须在内存中占一定的空间,否则无法使用这些实例。占用多少内存,由编译器决定,Visual Studio中,空类型的实例占1字节的空间。
    • 构造函数和析构函数的sizof均为1 原因无返回值,相当于是空类型
    • 其余函数的sizeof 根据的是它的返回值
    • 虚函数:相当于指向虚函数表的指针,32位的话 ,一个指针占4字节,64位的话,指针占8字节。
  • 赋值运算符函数:

  • tip:运算符重载:即实现运算符多态的一种方法,修改传统运算符的方式。

    • 格式:

      return_val operator op(argument -list)
      

      符号含义:

      • return_val: 返回值,可选,例如重载+ 一般都有返回值, 重载=号 可就没返回值。
      • operator: 重载符号:默认
      • op: 需要重载的符号例如:+ - * /
      • argument-list :重载的参数 例如int+int 那么重载的参数就是int
    • 实例:

      头文件

      #include "stdafx.h"
      
      class People
      {
      public:
      	//构造函数和析构函数
      	People();
      	~People();
      
      public:
      	char walk();
      	float getCount();
      	People operator+(const People&op_People);//重载加号运算符
      };
      

      可以看出,头文件中,定义了一个重载+号符号的运算符重载函数

      接下来是实现:

      // SizeofDemo.cpp : 定义控制台应用程序的入口点。
      //
      
      #include "stdafx.h"
      #include "SizeofDemo.h"
      
      using namespace std;
      
      People::People()
      {
      	cout << "This is a people!" << endl;
      }
      
      People::~People()
      {
      
      }
      
      char People::walk()
      {
      	cout << "sss"<<endl;
      	return 0;
      }
      
      People People::operator+(const People&op_People)
      {
      	cout << "重载成功" << endl;
      	People mm;
      	mm = op_People;
      	return mm;
      }
      
      float People::getCount()
      {
      	return 22.6;
      }
      
      int _tmain(int argc, _TCHAR* argv[])
      {
      	People * p_People = new People();
      	cout << sizeof(p_People->walk()) << endl;
      	delete p_People;
      	People cir_dd;
      	People dd;
      	People cir = cir_dd +dd; //测试重载
      	system("pause");
      	return 0;
      }
      
      
      

      运行结果:

可以看出 重载成功,实现了+号的多态。