//////C++ 版本
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
class Person {
public:
Person(std::string name, int age) : name(std::move(name)), age(age) {}
void greet() const {
std::cout << "Hello, I'm " << name << " and I'm " << age << " years old.\n";
}
private:
std::string name;
int age;
};
int main() {
std::vector<Person> people = {
{"Alice", 25},
{"Bob", 30},
{"Charlie", 35}
};
for (const auto& person : people) {
person.greet();
}
return 0;
}
/////Rust 版本
use std::fmt;
struct Person {
name: String,
age: u32,
}
impl Person {
fn new<T: Into<String>>(name: T, age: u32) -> Self {
Person {
name: name.into(),
age: age,
}
}
}
impl fmt::Display for Person {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "Hello, I'm {} and I'm {} years old.", self.name, self.age)
}
}
trait Greeter {
fn greet(&self);
}
impl Greeter for Person {
fn greet(&self) {
println!("{}", self);
}
}
fn main() {
let people: Vec<Person> = vec![
Person::new("Alice", 25),
Person::new("Bob", 30),
Person::new("Charlie", 35),
];
for person in people.iter() {
person.greet();
}
}
--
FROM 114.254.51.*