问题1:什么是 C++ 中的多态?如何实现多态?
回答1:C++ 中的多态是指同一种类型的实体,可以在不同的情况下表现出不同的行为。实现多态的方式有两种:虚函数和模板函数。虚函数是在基类中声明为虚函数的函数,可以在派生类中被重写,实现不同的行为。模板函数是一种通用的函数,可以用不同的类型实例化,实现不同的行为
以下是虚函数实现多态的示例代码:
class Animal {
public:
virtual void makeSound() {
cout << "Animal makes sound" << endl;
}
};
class Cat : public Animal {
public:
void makeSound() {
cout << "Cat meows" << endl;
}
};
class Dog : public Animal {
public:
void makeSound() {
cout << "Dog barks" << endl;
}
};
int main() {
Animal* animal1 = new Cat();
Animal* animal2 = new Dog();
animal1->makeSound();
animal2->makeSound();
return 0;
}
问题2:什么是 C++ 中的模板?如何使用模板?
回答2:C++ 中的模板是一种通用的代码,可以用不同的类型实例化。模板可以用于函数和类。使用模板需要在代码中声明模板类型,使用尖括号(<>)来指定类型。以下是模板函数和模板类的示例代码:
模板函数:
template <typename T>
T max(T a, T b) {
return a > b ? a : b;
}
int main() {
int a = 5, b = 10;
cout << max(a, b) << endl;
return 0;
}
模板类:
template <typename T>
class Stack {
private:
T* data;
int top;
public:
Stack() {
data = new T[100];
top = -1;
}
void push(T value) {
data[++top] = value;
}
T pop() {
return data[top--];
}
};
int main() {
Stack<int> intStack;
intStack.push(1);
intStack.push(2);
cout << intStack.pop() << endl;
cout << intStack.pop() << endl;
return 0;
}
问题3:什么是 C++ 中的智能指针?如何使用智能指针?
回答3:C++ 中的智能指针是一种指针类型,可以自动管理指针的生命周期,避免内存泄漏和悬空指针的问题。智能指针可以使用 RAII(资源获取即初始化)技术来实现。C++ 中的智能指针有三种:unique_ptr、shared_ptr 和 weak_ptr。unique_ptr 是一种独占指针,只能有一个指针指向一个对象,当指针被销毁时,对象也会被销毁。shared_ptr 是一种共享指针,可以有多个指针指向一个对象,对象会在最后一个指针被销毁时被销毁。weak_ptr 是一种弱指针,可以指向一个对象,但不会增加对象的引用计数,不会影响对象的生命周期。
以下是智能指针的示例代码:
#include <memory>
int main() {
// unique_ptr
std::unique_ptr<int> ptr1(new int(5));
std::unique_ptr<int> ptr2 = std::move(ptr1);
std::cout << *ptr2 << std::endl;
// shared_ptr
std::shared_ptr<int> ptr3(new int(10));
std::shared_ptr<int> ptr4 = ptr3;
std::cout << *ptr3 << std::endl;
std::cout << *ptr4 << std::endl;
// weak_ptr
std::shared_ptr<int> ptr5(new int(15));
std::weak_ptr<int> ptr6 = ptr5;
std::cout << *ptr5 << std::endl;
std::cout << ptr6.expired() << std::endl;
return 0;
}
C++是一种面向对象的编程语言,它是C语言的扩展。以下是C++基础学习的一些笔记:
基本数据类型
C++提供了以下基本数据类型:int, float, double, bool, char等。其中,int表示整数类型,float和double表示浮点数类型,bool表示布尔类型,char表示单个字符类型。
变量和常量
在C++中,变量是用于存储数据的标识符。变量的声明通常包括类型和名称。常量是不可更改的值,可以使用关键字const来声明常量。
运算符
C++支持各种运算符,包括算术运算符(+,-,*,/,%),关系运算符(==,!=,>,<,>=,<=),逻辑运算符(&&,||,!),位运算符(&,|,^,~,<<,>>)等。
控制语句
C++提供了各种控制语句,包括条件语句(if,else if,else),循环语句(for,while,do-while),跳转语句(break,continue,goto,return)等。这些语句可以帮助我们控制程序的流程和执行顺序。
函数
函数是一段可重用的代码,可以接受参数并返回值。在C++中,函数通常由函数头、函数体和返回值组成。函数可以帮助我们实现模块化编程,使代码更加清晰和易于维护。
数组和指针
数组是一组有序的元素,可以通过索引来访问。指针是一个变量,它存储了另一个变量的地址。在C++中,我们可以使用数组和指针来处理复杂的数据结构和算法。
类和对象
类是一种用户定义的数据类型,它包含数据成员和成员函数。对象是类的实例,它可以访问类的成员变量和函数。在C++中,类和对象是面向对象编程的核心概念。
以上是C++基础学习的一些笔记,希望对你有所帮助。