1.在c++中哪些运算符不能重载?
在 C++ 中,有以下几个运算符不能被重载:
. :成员访问运算符。例如obj.member中的.不能被重载。
:: :作用域解析运算符。用于指定命名空间、类等的作用域,不能被重载。
?: :条件运算符。如a? b : c中的?:不能被重载。
sizeof :用于获取对象或类型的大小,不能被重载。
2.C++中运算符优先级
2.
3.在 C++ 中,转义字符是一种特殊的字符表示方式,用于表示一些无法直接输入或具有特殊含义的字符。
\n:换行符,将光标移动到下一行的开头。 例如:cout << "Hello\nWorld!";会先输出 “Hello”,然后换行再输出 “World!”。
\t:制表符,用于在输出中进行水平制表,相当于一定数量的空格,通常是 8 个字符的位置。 例如:cout << "Name\tAge";可以在输出中对齐 “Name” 和 “Age” 两个字符串。
\r:回车符,将光标移动到当前行的开头,可用于覆盖当前行的部分内容。
\b:退格符,将光标向左移动一个位置,可用于删除前一个字符。
\:反斜杠本身,用于在字符串中表示一个反斜杠字符。 例如:cout << "C:\\Program Files";表示输出 “C:\Program Files”。
\0:空字符,用于表示字符串的结束。
4.strlen 和 sizeof 的区别:
1.sizeof是一个运算符,用于计算对象的大小,它的计算是在编译阶段完成的,而不是在程序运行的阶段,sizeof的结果与字节序无关。
2.strlen是一个函数,用于计算字符串的长度(不包括终止符\0),它的计算是在程序运行阶段完成的。
5.下面这段代码在c语言中和c++中运行会发生什么?
在C语言中可以正常运行打印两个hello,而在C++中无法正常运行。
在 C 语言中,函数调用的参数检查相对C++更宽松,
#include<stdio.h>
void func(void) {
printf("hello");
}
int main() {
func();
func(2);
}
6.在主函数中创建了一个对象数组,每次创建一个都会调用构造函数
#include<iostream>
using namespace std;
class Array {
public:
Array() {
cout << "hello world"<<endl;
}
~Array() {
cout << "goodbye world" << endl;
}
};
int main() {
Array a[6];
}
输出结果如下: